#ifndef ZAD7APP_HPP
#define ZAD7APP_HPP
namespace amodlisz {

	class AppFactory {
	public:
	        virtual Function * createFunction() = 0;
	        virtual ~AppFactory(){
	        }
	};

	class AppEuler: public AppFactory{
	public:
		Function * createFunction();
	};

	class AppEulerpc: public AppFactory{
	public:
		Function * createFunction();
	};

	class AppRK2: public AppFactory{
	public:
		Function * createFunction();
	};

	class Application {
	public:
		Function * f;
	        Application(AppFactory * factory);
		double* Run();
		void Normalize(double * soln);
	};

	AppFactory * createApplication();

}
#endif
